package cc.shacocloud.redis.study.lock;

/**
 * 令牌桶锁
 */
public interface TokenLimiterLock {

    /**
     * @return 获取令牌，如果获取成功则返回{@code true} 反之为{@code false}
     */
    boolean acquire();

    /**
     * 释放一个令牌
     */
    default void release() {
        release(1);
    }

    /**
     * 释放指定数量的令牌
     *
     * @param permits 指定数量的令牌
     */
    void release(int permits);

}
